// https://github.com/reduxjs/redux/issues/1    redux-thunk起源

/*
 * @description: 中间件主要接受dispatch, getStore ，主要目的是让中间件在增强 dispatch的时候能够调用到这两个api
 * 返回一个函数，函数接受 弱化版本的 dispatch(对应下面的 next)，返回增强的 dispatch函数(对应 next后面返回的函数)
 */
export default function ylThunk({ dispatch, getStore }) {
  // next 是需要被当前 中间件加强的 dispatch,返回一个函数是因为函数式编程的思想，后面是会被 compose组合的
  return (next) => (action) => {
    if (typeof action === 'function') {
      return action(dispatch, getStore);
    }
    return next(action);
  };
}
